import DatePicker from '../../packages/date-picker'

describe('DatePicker', () => {
    it('周选择器计算xx年xxx周 以选中列的周四进行计算', () => {
    const onChangeSpy = cy.spy().as("onChangeSpy");
        cy.mount(DatePicker, {
            propsData: {
                value: '',
                type: 'week',
                pickerOptions: {
                    firstDayOfWeek: 4,
                },
                autoFill: true,
                format: "yyyy 第 WW 周"
            },
            listeners: {
                input: onChangeSpy
            }
        })
        cy.get('.z-date-editor').click()
        cy.get('.available').contains('30').click()
        cy.get('@onChangeSpy').should('have.been.calledWith', new Date('2022-12-29'))
    
        cy.get('@vue').invoke('setProps', {
            value: new Date('2022-12-29')
        })
        cy.get('.z-date-editor > .z-input__inner').should('have.value', '2022 第 52 周')

        cy.get('@vue').invoke('setProps', {
            pickerOptions: {
                firstDayOfWeek: 7,
            }
        })
        cy.get('.z-date-editor').click()
        cy.get('.available').contains('30').click()
        cy.get('@onChangeSpy').should('have.been.calledWith', new Date('2023-01-05'))
        cy.get('@vue').invoke('setProps', {
            value: new Date('2023-01-05')
        })
        cy.get('.z-date-editor > .z-input__inner').should('have.value', '2023 第 01 周')

        
        cy.get('@vue').invoke('setProps', {
            value: new Date('2023-01-01')
        })
        cy.get('.z-date-editor').click()
        cy.get('.prev-month').contains('30').click()
        cy.get('@onChangeSpy').should('have.been.calledWith', new Date('2023-01-05'))
        cy.get('@vue').invoke('setProps', {
            value: new Date('2023-01-05')
        })
        cy.get('.z-date-editor > .z-input__inner').should('have.value', '2023 第 01 周')


        cy.get('@vue').invoke('setProps', {
            value: new Date('2023-01-01'),
            pickerOptions: {
                firstDayOfWeek: 1,
            }
        })
        cy.get('.z-date-editor').click()
        cy.get('.prev-month').contains('30').click()
        cy.get('@onChangeSpy').should('have.been.calledWith', new Date('2022-12-29'))
        cy.get('@vue').invoke('setProps', {
            value: new Date('2022-12-29')
        })
        cy.get('.z-date-editor > .z-input__inner').should('have.value', '2022 第 52 周')

        cy.get('@vue').invoke('setProps', {
            value: new Date('2022-12-20'),
            pickerOptions: {
                firstDayOfWeek: 1,
            }
        })
        cy.get('.z-date-editor').click()
        cy.get('.next-month').contains('1').click()
        cy.get('@onChangeSpy').should('have.been.calledWith', new Date('2023-01-05'))
        cy.get('@vue').invoke('setProps', {
            value: new Date('2023-01-05')
        })
        cy.get('.z-date-editor > .z-input__inner').should('have.value', '2023 第 01 周')
    })
})